Merge pull request #199 from EthicalML/196_make_test_thread_safe

Added memory barrier on test
This commit is contained in:
Alejandro Saucedo 2021-03-28 09:33:18 +01:00 committed by GitHub
commit 47bbef1509
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -92,10 +92,21 @@ TEST(TestMultipleAlgoExecutions, SingleSequenceRecord)
std::vector<uint32_t> spirv = kp::Shader::compileSource(shader);
{
// A sharedMemoryBarrier is required as the shader is not thread-safe:w
std::shared_ptr<kp::OpMemoryBarrier> shaderBarrier{
new kp::OpMemoryBarrier({ tensorA },
vk::AccessFlagBits::eTransferRead,
vk::AccessFlagBits::eShaderWrite,
vk::PipelineStageFlagBits::eComputeShader,
vk::PipelineStageFlagBits::eComputeShader)
};
mgr.sequence()
->record<kp::OpTensorSyncDevice>({ tensorA })
->record<kp::OpAlgoDispatch>(mgr.algorithm({ tensorA }, spirv))
->record(shaderBarrier)
->record<kp::OpAlgoDispatch>(mgr.algorithm({ tensorA }, spirv))
->record(shaderBarrier)
->record<kp::OpAlgoDispatch>(mgr.algorithm({ tensorA }, spirv))
->record<kp::OpTensorSyncLocal>({ tensorA })
->eval();