tgravescs commented on a change in pull request #24406: [SPARK-27024] Executor interface for cluster managers to support GPU and other resources URL: https://github.com/apache/spark/pull/24406#discussion_r279945885
########## File path: core/src/main/scala/org/apache/spark/ResourceInformation.scala ########## @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark + +import org.apache.spark.annotation.Evolving + +/** + * Class to hold information about a type of Resource. A resource could be a GPU, FPGA, etc. + * The array of addresses are resource specific and its up to the user to interpret the address. + * The units and addresses could be empty if they doesn't apply to that resource. + * + * One example is GPUs, where the addresses would be the indices of the GPUs, the count would be the + * number of GPUs and the units would be an empty string. + * + * @param name the name of the resource + * @param units the units of the resources, can be an empty string if units don't apply + * @param count the number of resources available + * @param addresses an optional array of strings describing the addresses of the resource + */ +@Evolving +case class ResourceInformation( + private val name: String, + private val units: String, + private val count: Long, + private val addresses: Array[String] = Array.empty) { + + def getName(): String = name Review comment: I specifically made them private because its user facing and I think its better to have real getters and a formal api and not just give the users access to the constructor parameters. it potentially gives us ability to modify or enhance and protect certain things. Here I'm thinking of if this was extended to say have another field like attributes. Where a resource might have user defined attributes like model/manufacturer, etc. In this case perhaps you want nicer api then just returning all attributes and if you start this way you can keep those consistently named. But if enough people disagree I'm fine with the other way to, I think this is just nicer for user facing api. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
