From 46445a92128540549a0be5dfca532b5cd6692284 Mon Sep 17 00:00:00 2001 From: zhongsunjian1 Date: Mon, 26 May 2025 15:21:41 +0800 Subject: [PATCH] ut_test --- .../mix/attention/test_flash_attention.cpp | 91 ------------------- 1 file changed, 91 deletions(-) diff --git a/tests/unittest/kernels/mix/attention/test_flash_attention.cpp b/tests/unittest/kernels/mix/attention/test_flash_attention.cpp index 0774ddd9..a72d57bb 100644 --- a/tests/unittest/kernels/mix/attention/test_flash_attention.cpp +++ b/tests/unittest/kernels/mix/attention/test_flash_attention.cpp @@ -1630,95 +1630,4 @@ TEST(TestFlashAttentionNd, FlashAttentionTestKVPtr_relayAttention_bigbatchkvhead SVector inDataFiles = Mki::Test::GetInDataFiles(atbopsHomeDir, subDir); Status status = opTest.RunWithDataFileKVPtr(opDesc, inTensorDesc, inDataFiles); ASSERT_EQ(status.Ok(), false); -} - -TEST(TestFlashAttentionNd, FlashAttentionTestKVPtr_relayAttention_bigbatchkvheadcase5_batch60_kvhead8) -{ - // should generate data first - CHECK_DEVICE_VERSION_ASCEND910B(); - const char *atbopsHome = std::getenv("ASDOPS_HOME_PATH"); - ASSERT_NE(atbopsHome, nullptr); - std::string atbopsHomeDir(atbopsHome); - std::string subDir = "attention"; - bool isRelay = true; - std::vector shareIdx; - for(int i = 0; i < 100; i++) { - if(i % 3 == 0) { - shareIdx.push_back(0); - } else if (i % 2 == 0){ - shareIdx.push_back(1); - } else if (i % 5 == 0){ - shareIdx.push_back(-1); - } else { - shareIdx.push_back(2); - } - } - uint32_t shareLength = 10; - std::vector shareLen; - for(int i = 0; i < shareLength; i++){ - shareLen.push_back(1024); - } - std::ofstream shareIdxBin(atbopsHomeDir + "/../../../tests/unittest/kernels/mix/" + subDir + "/data/share_idx.bin", std::ios::binary); - shareIdxBin.write((const char *)shareIdx.data(), shareIdx.size() * sizeof(int)); - shareIdxBin.close(); - std::ofstream shareLenBin(atbopsHomeDir + "/../../../tests/unittest/kernels/mix/" + subDir + "/data/share_len.bin", std::ios::binary); - shareLenBin.write((const char *)shareLen.data(), shareLen.size() * sizeof(int)); - shareLenBin.close(); - std::string dataGen = "python3 " + atbopsHomeDir + "/../../../tests/unittest/kernels/mix/" + - subDir + "/data/unpad_FA_data_gen_renew.py 60 2048 8 1 32 128 2048 0 0 5 1 0 1"; - int ret = system(dataGen.c_str()); - ASSERT_EQ(WEXITSTATUS(ret), 0); - Mki::Test::MkiOpTest opTest; - std::vector scalars; // {batch, embd, qHead, kvHead, maxSeq} - bool batchDynamic = false; - PrepareScalarParams(scalars, batchDynamic, opTest, atbopsHomeDir, subDir); - uint32_t batch = scalars[0]; - uint32_t edim = scalars[1]; - uint32_t qHead = scalars[2]; - uint32_t kvHead = scalars[3]; - uint32_t maxSeq = scalars[4]; - std::vector q_seqlen(batch, 0); - std::vector kv_seqlen(batch, 0); - std::vector batch_state(batch, 0); - PrepareVectors(q_seqlen, kv_seqlen, batch_state, opTest, atbopsHomeDir, subDir); - uint64_t qnTokens = 0; - for (auto &it : q_seqlen) { - qnTokens += it; - } - std::vector expect(qnTokens * edim * qHead, 0); - std::vector expect_high(qnTokens * edim * qHead, 0); - PrepareExpect(expect, expect_high, opTest, atbopsHomeDir, subDir); - std::string dtype = "fp16"; - opTest.Golden(std::bind(FlashAttentionNdGolden, expect.data(), expect_high.data(), dtype, std::placeholders::_1)); - - TensorDesc kvTensorDesc = {TENSOR_DTYPE_FLOAT16, TENSOR_FORMAT_ND, {maxSeq, kvHead * edim}}; - std::vector kvFiles; - opTest.shareIdx = shareIdx; - opTest.shareLen = shareLen; - opTest.isRelay = isRelay; - PrepareKvFiles(batch, kvFiles, opTest, atbopsHomeDir, subDir, isRelay, shareLength); - opTest.PrepareKVcacheBatchwiseTensors(batch, kvTensorDesc, kvFiles, shareLength); - OpParam::UnpadFlashAttention opParam; - opParam.type = OpParam::UnpadFlashAttention::RELAY_ATTENTION_DECODER_ND; - opParam.qSeqLen = q_seqlen; - opParam.kvSeqLen = kv_seqlen; - opParam.headSize = qHead; - opParam.kvHead = kvHead; - opParam.tor = 1; - opParam.kShareTensorList = opTest.kSepCacheBatchWise; - opParam.vShareTensorList = opTest.vSepCacheBatchWise; - opParam.kTensorList = opTest.kCacheBatchWise; - opParam.vTensorList = opTest.vCacheBatchWise; - opParam.kvShareMap = shareIdx; - opParam.kvShareLen = shareLen; - opParam.maskType = OpParam::UnpadFlashAttention::MASK_TYPE_NONE; - Mki::Test::UtOpDesc opDesc = {"UnpadFlashAttentionOperation", opParam}; - - SVector inTensorDesc = { - {TENSOR_DTYPE_FLOAT16, TENSOR_FORMAT_ND, {qnTokens, qHead * edim}}, // q - {TENSOR_DTYPE_FLOAT16, TENSOR_FORMAT_ND, {}}, // mask - }; - SVector inDataFiles = Mki::Test::GetInDataFiles(atbopsHomeDir, subDir); - Status status = opTest.RunWithDataFileKVPtr(opDesc, inTensorDesc, inDataFiles); - ASSERT_EQ(status.Ok(), true); } \ No newline at end of file -- Gitee