int VoxelServer::sendSpecialPacket(const SharedNodePointer& node) { int numBytesPacketHeader = populatePacketHeader(reinterpret_cast<char*>(_tempOutputBuffer), PacketTypeEnvironmentData); int envPacketLength = numBytesPacketHeader; int environmentsToSend = getSendMinimalEnvironment() ? 1 : getEnvironmentDataCount(); for (int i = 0; i < environmentsToSend; i++) { envPacketLength += getEnvironmentData(i)->getBroadcastData(_tempOutputBuffer + envPacketLength); } NodeList::getInstance()->writeDatagram((char*) _tempOutputBuffer, envPacketLength, SharedNodePointer(node)); return envPacketLength; }
TEST_F(CudaMultiplicativeInteractionModelTest, Construct) { const int numberOfIndividuals = 10; MKLWrapper& mklWrapper; CudaMultiplicativeInteractionModel cudaMultiplicativeInteractionModel(kernelWrapper); Container::PinnedHostVector snpData(numberOfIndividuals); Container::PinnedHostVector envData(numberOfIndividuals); Container::PinnedHostVector interData(numberOfIndividuals); for(int i = 0; i < numberOfIndividuals; ++i){ snpData(i) = i; } for(int i = 0; i < numberOfIndividuals; ++i){ envData(i) = numberOfIndividuals - i; } Container::DeviceVector* snpDataDevice = hostToDeviceStream1.transferVector(snpData); Container::DeviceVector* envDataDevice = hostToDeviceStream1.transferVector(envData); Container::DeviceVector* interDataDevice = hostToDeviceStream1.transferVector(interData); Container::SNPVectorMock<Container::DeviceVector> snpVectorMock; EXPECT_CALL(snpVectorMock, getNumberOfIndividualsToInclude()).WillRepeatedly(Return(numberOfIndividuals)); EXPECT_CALL(snpVectorMock, getOriginalSNPData()).Times(1).WillRepeatedly(ReturnRef(*snpDataDevice)); Container::EnvironmentVectorMock<Container::DeviceVector> environmentVectorMock; EXPECT_CALL(environmentVectorMock, getNumberOfIndividualsToInclude()).WillRepeatedly(Return(numberOfIndividuals)); EXPECT_CALL(environmentVectorMock, getEnvironmentData()).Times(1).WillRepeatedly(ReturnRef(*envDataDevice)); Container::InteractionVectorMock<Container::DeviceVector> interactionVectorMock; EXPECT_CALL(interactionVectorMock, getNumberOfIndividualsToInclude()).WillRepeatedly(Return(numberOfIndividuals)); EXPECT_CALL(interactionVectorMock, getInteractionData()).Times(1).WillRepeatedly(ReturnRef(*interDataDevice)); EXPECT_CALL(interactionVectorMock, updateSize(numberOfIndividuals)).Times(1); cudaMultiplicativeInteractionModel.applyModel(snpVectorMock, environmentVectorMock, interactionVectorMock); Container::PinnedHostVector* interDataHostRes = deviceToHostStream1.transferVector(*interDataDevice); for(int i = 0; i < numberOfIndividuals; ++i){ EXPECT_EQ(i * (numberOfIndividuals - i), (*interDataHostRes)(i)); } delete snpDataDevice; delete envDataDevice; delete interDataDevice; delete interDataHostRes; }
TEST_F(CpuMultiplicativeInteractionModelTest, Construct) { const int numberOfIndividuals = 10; MKLWrapper& mklWrapper; CpuMultiplicativeInteractionModel cpuMultiplicativeInteractionModel(mklWrapper); Container::RegularHostVector snpData(numberOfIndividuals); Container::RegularHostVector envData(numberOfIndividuals); Container::RegularHostVector interData(numberOfIndividuals); for(int i = 0; i < numberOfIndividuals; ++i){ snpData(i) = i; } for(int i = 0; i < numberOfIndividuals; ++i){ envData(i) = numberOfIndividuals - i; } Container::SNPVectorMock<Container::RegularHostVector> snpVectorMock; EXPECT_CALL(snpVectorMock, getNumberOfIndividualsToInclude()).WillRepeatedly(Return(numberOfIndividuals)); EXPECT_CALL(snpVectorMock, getOriginalSNPData()).Times(1).WillRepeatedly(ReturnRef(snpData)); Container::EnvironmentVectorMock<Container::RegularHostVector> environmentVectorMock; EXPECT_CALL(environmentVectorMock, getNumberOfIndividualsToInclude()).WillRepeatedly(Return(numberOfIndividuals)); EXPECT_CALL(environmentVectorMock, getEnvironmentData()).Times(1).WillRepeatedly(ReturnRef(envData)); Container::InteractionVectorMock<Container::RegularHostVector> interactionVectorMock; EXPECT_CALL(interactionVectorMock, getNumberOfIndividualsToInclude()).WillRepeatedly(Return(numberOfIndividuals)); EXPECT_CALL(interactionVectorMock, getInteractionData()).Times(1).WillRepeatedly(ReturnRef(interData)); EXPECT_CALL(interactionVectorMock, updateSize(numberOfIndividuals)).Times(1); cpuMultiplicativeInteractionModel.applyModel(snpVectorMock, environmentVectorMock, interactionVectorMock); for(int i = 0; i < numberOfIndividuals; ++i){ EXPECT_EQ(i * (numberOfIndividuals - i), interData(i)); } }