| ceed-vector.c (9f99de848d0840355ad9548f806c3b5e4a3b9722) | ceed-vector.c (bb03490db5dd50abd44d5abe8f5d902899c96770) |
|---|---|
| 1// Copyright (c) 2017-2024, Lawrence Livermore National Security, LLC and other CEED contributors. 2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 3// 4// SPDX-License-Identifier: BSD-2-Clause 5// 6// This file is part of CEED: http://github.com/ceed 7 8#include <ceed-impl.h> --- 242 unchanged lines hidden (view full) --- 251 @param[in,out] vec_copy `CeedVector` to copy values to 252 253 @return An error code: 0 - success, otherwise - failure 254 255 @ref User 256**/ 257int CeedVectorCopyStrided(CeedVector vec, CeedSize start, CeedInt step, CeedVector vec_copy) { 258 CeedSize length; | 1// Copyright (c) 2017-2024, Lawrence Livermore National Security, LLC and other CEED contributors. 2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 3// 4// SPDX-License-Identifier: BSD-2-Clause 5// 6// This file is part of CEED: http://github.com/ceed 7 8#include <ceed-impl.h> --- 242 unchanged lines hidden (view full) --- 251 @param[in,out] vec_copy `CeedVector` to copy values to 252 253 @return An error code: 0 - success, otherwise - failure 254 255 @ref User 256**/ 257int CeedVectorCopyStrided(CeedVector vec, CeedSize start, CeedInt step, CeedVector vec_copy) { 258 CeedSize length; |
| 259 const CeedScalar *array; 260 CeedScalar *array_copy; | 259 const CeedScalar *array = NULL; 260 CeedScalar *array_copy = NULL; |
| 261 262 // Backend version 263 if (vec->CopyStrided && vec_copy->CopyStrided) { 264 CeedCall(vec->CopyStrided(vec, start, step, vec_copy)); 265 vec_copy->state += 2; 266 return CEED_ERROR_SUCCESS; 267 } 268 269 // Get length 270 { 271 CeedSize length_vec, length_copy; 272 273 CeedCall(CeedVectorGetLength(vec, &length_vec)); 274 CeedCall(CeedVectorGetLength(vec_copy, &length_copy)); | 261 262 // Backend version 263 if (vec->CopyStrided && vec_copy->CopyStrided) { 264 CeedCall(vec->CopyStrided(vec, start, step, vec_copy)); 265 vec_copy->state += 2; 266 return CEED_ERROR_SUCCESS; 267 } 268 269 // Get length 270 { 271 CeedSize length_vec, length_copy; 272 273 CeedCall(CeedVectorGetLength(vec, &length_vec)); 274 CeedCall(CeedVectorGetLength(vec_copy, &length_copy)); |
| 275 if (length_vec <= 0 || length_copy <= 0) return CEED_ERROR_SUCCESS; |
|
| 275 length = length_vec < length_copy ? length_vec : length_copy; 276 } 277 278 // Copy 279 CeedCall(CeedVectorGetArrayRead(vec, CEED_MEM_HOST, &array)); 280 CeedCall(CeedVectorGetArray(vec_copy, CEED_MEM_HOST, &array_copy)); 281 for (CeedSize i = start; i < length; i += step) array_copy[i] = array[i]; 282 --- 89 unchanged lines hidden (view full) --- 372 373 if (vec->SetValueStrided) { 374 CeedCall(vec->SetValueStrided(vec, start, step, value)); 375 vec->state += 2; 376 } else { 377 CeedSize length; 378 CeedScalar *array; 379 | 276 length = length_vec < length_copy ? length_vec : length_copy; 277 } 278 279 // Copy 280 CeedCall(CeedVectorGetArrayRead(vec, CEED_MEM_HOST, &array)); 281 CeedCall(CeedVectorGetArray(vec_copy, CEED_MEM_HOST, &array_copy)); 282 for (CeedSize i = start; i < length; i += step) array_copy[i] = array[i]; 283 --- 89 unchanged lines hidden (view full) --- 373 374 if (vec->SetValueStrided) { 375 CeedCall(vec->SetValueStrided(vec, start, step, value)); 376 vec->state += 2; 377 } else { 378 CeedSize length; 379 CeedScalar *array; 380 |
| 380 CeedCall(CeedVectorGetArray(vec, CEED_MEM_HOST, &array)); | |
| 381 CeedCall(CeedVectorGetLength(vec, &length)); | 381 CeedCall(CeedVectorGetLength(vec, &length)); |
| 382 if (length <= 0) return CEED_ERROR_SUCCESS; 383 CeedCall(CeedVectorGetArray(vec, CEED_MEM_HOST, &array)); |
|
| 382 for (CeedSize i = start; i < length; i += step) array[i] = value; 383 CeedCall(CeedVectorRestoreArray(vec, &array)); 384 } 385 return CEED_ERROR_SUCCESS; 386} 387 388/** 389 @brief Sync the `CeedVector` to a specified `mem_type`. --- 689 unchanged lines hidden --- | 384 for (CeedSize i = start; i < length; i += step) array[i] = value; 385 CeedCall(CeedVectorRestoreArray(vec, &array)); 386 } 387 return CEED_ERROR_SUCCESS; 388} 389 390/** 391 @brief Sync the `CeedVector` to a specified `mem_type`. --- 689 unchanged lines hidden --- |